IOS初学记录-古老的OC
以前折腾过一阵IOS给停止了,最近因要了解Rect-Native重新学习下,希望这次能坚持
疑惑:认识
消息: Objective-C 调用其类的方法称为起发送
消息;「@」符号: 起到编译标识的作用;
『+』: 类的静态方法
『-』: 类的所属方法
『NSXXX』:是个曾经是NextStep 公司的时候开发的库,oc 编译是个平级函数资源,为防止重复采用前缀区别对待
ORC: Automatic Reference Counting 就是代码中自动加入了retain/release http://www.yifeiyang.net/development-of-the-iphone-simply-1/
疑惑: 类的方法
Person.m文件1
2
3
4
5
6
7
8
9
10
11
12#import <Foundation/Foundation.h>
@interface Person : NSObject {
int width;
int height;
}
@property int age;
@end
Person.h w文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#import "Person.h"
@implementation Person {
int baidu;
}
- (Person*)init
{
width = 100;
_age = 10;
self->baidu = 100000;
self->_age = 100;
self.age = 10000;
return self;
}
- (NSString*)description
{
NSLog(@"%d,%d, %d", width, height, self->baidu);
return @"aaaaaaaaaa";
};
- (void)add
{
NSLog(@"this age is %d", self.age);
}
@end
@property是声明了属性,具有了set和get方法,可以采用.来操作,其属性命名为_名字;方法中类属性可以省略 self, 属性直接声明是在其{}中
疑惑:类中的方法
定义1
-/+ (返回类型) 方法名: (参数1类型) 形参1 参数2描述: (参数2类型) 形参2 参数3描述: (参数3类型) 形参3 .......
调用
1 | [object 方法名:参数1 参数描述2:参数2 ...]; |
OC 中 方法名可以作为参数1的描述,方法的所有描述构成一个完整的方法,只有描述不同其方法可认为是不同的;
如下面是错误的,方法重复
1 | - (NSString) initWithAdd:(int) arg1; |
其下面是 ok 的:
1 | - (NSString) initWithAdd:(int) arg1; |
疑惑:接口、Block、Category
接口
oc没有严格的接口定义,采用@protocol 去约束类的方法;@optional不强制实现,@required表必须实现, NS 库中多数类为接口如 NSObject, UIApplicationDelegate
1 | @protocol AnimalDelegate <NSObject> //AnimalDelegate扩展语 NSObject协议 |
Block
可以作为匿名函数来理解, 作为类的属性定义
定义
1 | @property (nonatomic,copy) void(^ onClick)(KCButton *); |
实现
1 | KCButton *button=[[KCButton alloc]init]; |
http://www.jianshu.com/p/17872da184fb
Category分类
如果对已有类进行扩展可采用继承或者此分类的形式, 如扩展 NSString 类
参考:http://blog.csdn.net/yhawaii/article/details/6992094
IOS生命周期
IOS 运行是代理、委托或者过程,中间经过层层事件传递, 继承与UIApplicationDelegate接口,生命函数大概如下
- no runting -> inactive -> active
application:didFinishLaunchingWithOptions -> applicationDidBecomeActive
- 切换到其他app, active -> inactive -> background
applicationDidBecomeActive -> applicationWillResignActive ->applicationDidEnterBackground
- 从其他 app 切换回来, background -> inactive -> active
applicationDidEnterBackground -> applicationWillEnterForeground -> applicationDidBecomeActive
- 锁屏 active -> inactive -> background
applicationDidBecomeActive -> applicationWillResignActive -> applicationDidEnterBackground
- 异常终止 end
applicationWillTerminate